﻿Public Class frmMapaDePrueba
    Private _pictures As New List(Of PictureBox)
    Private WithEvents UnMapa As clMapa

    Private Sub frmMapaDePrueba_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        If e.KeyCode = Keys.A OrElse e.KeyCode = Keys.S OrElse e.KeyCode = Keys.D OrElse e.KeyCode = Keys.W Then 'Lo separo para que la pregunta de abajo no haga la misma pregunta. -es para que le cueste menos, no más.
            If e.KeyCode = Keys.A Then miHeroe.ControlDelHeroe.Moverme(clControlBasico.Donde.Izquierda, UnMapa)
            If e.KeyCode = Keys.S Then miHeroe.ControlDelHeroe.Moverme(clControlBasico.Donde.Abajo, UnMapa)
            If e.KeyCode = Keys.D Then miHeroe.ControlDelHeroe.Moverme(clControlBasico.Donde.Derecha, UnMapa)
            If e.KeyCode = Keys.W Then miHeroe.ControlDelHeroe.Moverme(clControlBasico.Donde.Arriba, UnMapa)
            Escalera.Activado = clControlBasico.BuscarQue(miHeroe.ControlDelHeroe, Escalera, UnMapa) = clControlBasico.Donde.Posicion
        End If
        'Esta verdad puede ser falsa o verdade

        If e.KeyCode = Keys.Space Then
            BarraEspaciadora()
        End If
        UnMapa.aparecer()
    End Sub
    Private Sub BarraEspaciadora()
        For Each x As clCasillaPuerta In puertas
            If miHeroe.ControlDelHeroe.EncontrarQue(x, UnMapa) Then
                x.AbrirOCerrarPuertaSinLlave()
                Exit For
            End If
        Next
    End Sub

    Private puertas As List(Of clCasillaPuerta)
    Private Escalera As clCasillaEscaleras 'Entiendo que esta es la primera escalera y solo puede subir, por defecto sube.
    Private cofre As clCasillaCofre
    Private Sub frmMapaDePrueba_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        puertas = New List(Of clCasillaPuerta) From {New clCasillaPuerta(p40), New clCasillaPuerta(p41), New clCasillaPuerta(p42), New clCasillaPuerta(p43)}

        UnMapa = New clMapa(10, 10)
        Escalera = New clCasillaEscaleras(P1)
        cofre = New clCasillaCofre(p3)
        'Dim cord As New List(Of Coordenadas) From {New Coordenadas(1, 2)}

        AddHandler Escalera.CambiarPiso, AddressOf Escalera_CambiarPiso
        UnMapa.AñadirCasilla(Escalera, 8, 9) 'Escalera
        UnMapa.AñadirCasilla(New clCasillaPared(p2), 1, 0)
        UnMapa.AñadirCasilla(cofre, 0, 8)
        UnMapa.AñadirCasilla(New clCasillaPared(p4), 1, 1)
        UnMapa.AñadirCasilla(New clCasillaPared(p5), 9, 0)
        UnMapa.AñadirCasilla(New clCasillaPared(p6), 9, 1)
        UnMapa.AñadirCasilla(New clCasillaPared(p7), 1, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p8), 2, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p9), 4, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p10), 5, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p11), 6, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p12), 7, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p13), 9, 2)
        UnMapa.AñadirCasilla(New clCasillaPared(p14), 5, 3)
        UnMapa.AñadirCasilla(New clCasillaPared(p15), 9, 3)
        UnMapa.AñadirCasilla(New clCasillaPared(p16), 5, 4)
        UnMapa.AñadirCasilla(New clCasillaPared(p17), 7, 4)
        UnMapa.AñadirCasilla(New clCasillaPared(p18), 8, 4)
        UnMapa.AñadirCasilla(New clCasillaPared(p19), 9, 4)
        UnMapa.AñadirCasilla(New clCasillaPared(p20), 9, 9)
        UnMapa.AñadirCasilla(New clCasillaPared(p21), 0, 5)
        UnMapa.AñadirCasilla(New clCasillaPared(p22), 1, 5)
        UnMapa.AñadirCasilla(New clCasillaPared(p23), 4, 5)
        UnMapa.AñadirCasilla(New clCasillaPared(p24), 1, 6)
        UnMapa.AñadirCasilla(New clCasillaPared(p25), 4, 6)
        UnMapa.AñadirCasilla(New clCasillaPared(p26), 5, 6)
        UnMapa.AñadirCasilla(New clCasillaPared(p27), 6, 7)
        UnMapa.AñadirCasilla(New clCasillaPared(p28), 7, 8)
        UnMapa.AñadirCasilla(New clCasillaPared(p29), 7, 1)
        UnMapa.AñadirCasilla(New clCasillaPared(p30), 7, 4)
        UnMapa.AñadirCasilla(New clCasillaPared(p31), 7, 7)
        UnMapa.AñadirCasilla(New clCasillaPared(p32), 8, 4)
        UnMapa.AñadirCasilla(New clCasillaPared(p33), 8, 5)
        UnMapa.AñadirCasilla(New clCasillaPared(p34), 1, 9)
        UnMapa.AñadirCasilla(New clCasillaPared(p35), 4, 9)
        UnMapa.AñadirCasilla(New clCasillaPared(p36), 5, 9)
        UnMapa.AñadirCasilla(New clCasillaPared(p37), 7, 9)
        UnMapa.AñadirCasilla(New clCasillaPared(p38), 4, 7)
        UnMapa.AñadirCasilla(New clCasillaPared(p39), 1, 7)
        UnMapa.AñadirCasilla(puertas(3), 1, 8)
        UnMapa.AñadirCasilla(puertas(1), 3, 2)
        UnMapa.AñadirCasilla(puertas(2), 4, 8)
        UnMapa.AñadirCasilla(puertas(0), 7, 0)
        'UnMapa.AñadirCasilla(puerta, 5, 5)
        UnMapa.AgregarMapa(Me)
        '_posiciones(0).x = 5
        '_posiciones(0).y = 5
        miHeroe.ControlDelHeroe.CambiarControl(heroebtn)
        miHeroe.ControlDelHeroe.Teletransportar(0, 0, UnMapa)
    End Sub

    Private Sub heroebtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles heroebtn.Click

    End Sub
    Public Sub combatiendo()
        'Me.monstertimer.Stop()
    End Sub

    Private Sub UnMapa_Aparicion_Monstruos(ByVal sender As clMapa, ByVal e As System.EventArgs) Handles UnMapa.Aparicion_Monstruos
        Dim aleatorio As New Random
        Dim aparicion As Integer
        aparicion = aleatorio.Next(10)
        If aparicion = 4 Or 6 Or 8 Then
            aparicion = aleatorio.Next(lista_monstruos_piso1.Count)
            Dim combate As New frmCombate
            combate.ElMonstruo = lista_monstruos_piso1(aparicion)
            If TryCast(lista_monstruos_piso1(aparicion), clMonstruo).Nombre = "H.A.S.I.R, rey de las ratas" Then Exit Sub
            combate.lblNombreheroe.Text = miHeroe.Nombre
            combate.lblNombreMalo.Text = lista_monstruos_piso1(aparicion).Nombre
            combate.Show()
            combatiendo()
        End If
    End Sub


    Private Sub Escalera_CambiarPiso(ByVal Yo As clCasillaEscaleras, ByVal e As EventArgs) 'Handles Escalera.CambiarPiso
        If Yo.Sube Then

            'TODO ¿A qué piso va?
            MessageBox.Show("Sube")
        Else
            'TODO ¿A qué piso iría? -aquí sobra pero así lo veís.
        End If
    End Sub

    Private lista_monstruos_piso1 As New List(Of clMonstruo) From {New clMonstruo("Pulga Asesina", 1, 1, 5, 1, 100, lista_de_objetos(0), My.Resources.Elfof), New clMonstruo("Rata Rapaz", 2, 2, 10, 2, 100, lista_de_objetos(0), My.Resources.rata_nivel1), New clMonstruo("Serpiente Taimada", 7, 1, 15, 2, 100, lista_de_objetos(0), My.Resources.caballero_oscuro), New clMonstruo("Leprechaun Borracho", 3, 3, 20, 3, 100, lista_de_objetos(0), My.Resources.Elfaf), New clMonstruo("H.A.S.I.R, rey de las ratas", 6, 6, 20, 7, 100, lista_de_objetos(0), My.Resources.Elfaf)}
End Class
'Public Structure Coordenadas
'    Dim x As Integer
'    Dim y As Integer
'    Public Sub New(ByVal mix As Integer, ByVal miy As Integer)
'        x = mix
'        y = miy
'    End Sub

'End Structure

'LOAD

'For Each mc As Control In Me.Controls
'    If mc.GetType = GetType(PictureBox) Then
'        _pictures.Add(mc)
'    End If
'Next
'For i As Integer = 0 To 4
'    MiMapa.AñadirCasilla(New clCasillaPared(_pictures(i)), _posiciones(i).x, _posiciones(i).y)
'Next
'puerta = New clCasillaPuerta(p6, False)
'MiMApa.AñadirCasilla(New clCasillaPared(P1), 8, 6)
'MiMApa.AñadirCasilla(New clCasillaPared(p2), 5, 7)
'MiMApa.AñadirCasilla(New clCasillaPared(p3), 8, 5)
'MiMApa.AñadirCasilla(New clCasillaPared(p4), 5, 9)
'MiMApa.AñadirCasilla(New clCasillaPared(p5), 4, 9)
'MiMApa.AñadirCasilla(puerta, 5, 5)
'Dim Coordenadas As New List(Of Coordenadas) From {New Coordenadas(0, 1), New Coordenadas(0, 2)}
'UnHeroe = New clHeroe("Dios", 1, 1, 1, 1)
'puerta = New clCasillaPuerta(p6, False)
'For Each x As Control In Me.Controls
'    If x.GetType = GetType(PictureBox) Then

'    End If
'Next
'No poner las de tierra 
'Dim listaCoordenadas As New List(Of Coordenadas) From {New Coordenadas(1, 0), New Coordenadas(1, 7), New Coordenadas(1, 1), New Coordenadas(9, 0), New Coordenadas(9, 1), New Coordenadas(1, 2), New Coordenadas(2, 2), New Coordenadas(4, 2), New Coordenadas(5, 2), New Coordenadas(6, 2), New Coordenadas(7, 2), New Coordenadas(9, 2), New Coordenadas(5, 3), New Coordenadas(9, 3), New Coordenadas(5, 4), New Coordenadas(7, 4), New Coordenadas(8, 4), New Coordenadas(9, 4), New Coordenadas(9, 9), New Coordenadas(0, 5), New Coordenadas(1, 5), New Coordenadas(4, 5), New Coordenadas(7, 1), New Coordenadas(4, 6), New Coordenadas(5, 6), New Coordenadas(6, 7), New Coordenadas(7, 8), New Coordenadas(7, 4), New Coordenadas(7, 7), New Coordenadas(8, 4), New Coordenadas(8, 5), New Coordenadas(1, 9), New Coordenadas(4, 9), New Coordenadas(5, 9), New Coordenadas(7, 9), New Coordenadas(1, 6)} 'Aqui se almacenan todas las coordenadas que se van ha utilizar. 
'Dim z As Integer = 0 'contador
'For Each Imagen As Control In Me.Controls 'Así es imposible confundirse, solo se quitarían sobrantes.
'    If Imagen.GetType = GetType(PictureBox) And z < listaCoordenadas.Count Then 'Por si hay más picturebox
'        UnMapa.AñadirCasilla(New clCasillaPared(Imagen), listaCoordenadas(z).x, listaCoordenadas(z).y)
'        z = z + 1 'Está aquí dentro porque en este caso solo interesa coger los que son picturebox, si no es picturebox, la z no debe crecer.
'    End If
'Next




'Private Sub monstertimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles monstertimer.Tick
'    UnMapa.aparecer()

'End Sub
